<!DOCTYPE html>
<html lang="en" >
<head>
  <meta charset="UTF-8">
  
 <meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover">
 
		<meta charset="utf-8">
		<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
        
        
        

        
        	<style>
@import url('https://fonts.googleapis.com/css?family=Montserrat:100,100i,200,200i,300,300i,400,400i,500,500i,600,600i,700,700i,800,800i,900,900i&display=swap&subset=cyrillic');
</style>

	<style>
@import url('https://www.emiia.ru/css.css?family=Montserrat:100,100i,200,200i,300,300i,400,400i,500,500i,600,600i,700,700i,800,800i,900,900i&display=swap&subset=cyrillic');
</style>

  <style>  
@import url('/css.css?family=Montserrat:100,100i,200,200i,300,300i,400,400i,500,500i,600,600i,700,700i,800,800i,900,900i&display=swap&subset=cyrillic');
</style>

<link rel="stylesheet" href="https://www.emiia.ru/cssfamily=Montserrat.css">
<link rel="stylesheet" href="/cssfamily=Montserrat.css">
        
        
        
        
        
        
             

		<title>EMIIA.AI FRAMEWORK & LIBRARY</title>
        
        
		<meta name="description" content="EMIIA.AI: FRAMEWORK & LIBRARY" />
        
        
		<meta property="og:title" content="EMIIA.AI: FRAMEWORK & LIBRARY" />
		<meta property="og:description" content="" />
		<meta property="og:site_name" content="" />
		<meta property="og:image" content="https://framework.emiia.ai/emiia_analytics_logo_bim_500_500.png" />
		<meta property="og:type" content="article" />
		<meta property="og:url" content="https://framework.emiia.ai" />
        
        
		<meta property="fb:app_id" content="146002942236376" />
        

		<meta name="mobile-web-app-capable" content="yes">
		<meta name="apple-mobile-web-app-capable" content="yes">
		<meta name="apple-mobile-web-app-status-bar-style" content="white-translucent">
	<meta name="apple-mobile-web-app-title" content="EMIIA.AI">
        
        
        			<meta name="twitter:card" content="summary_large_image">
	<meta name="twitter:site" content="@LIBRARY">
	<meta name="twitter:title" content="EMIIA.AI">
	<meta name="twitter:description" content="EMIIA.AI — Intelligent software sensor | Framework & Library">
	<meta content='GIS-BIM-EDM' name='apple-mobile-web-app-title'/>
	<meta name="twitter:image" content="https://framework.emiia.ai/emiia_analytics_logo_bim_500_500.png">
  
  

  
 
 
 
 
 
<service android:name="com.mapbox.services.android.telemetry.service.TelemetryService" />
    
    
    
<!-- Android app support -->
  <meta name="mobile-web-app-capable" content="yes">
  <link rel="manifest" href="manifest1.json">
  <link rel="manifest" href="https://framework.emiia.ai/manifest1.json">

  <!-- iOS app support -->
  <meta name="apple-mobile-web-app-capable" content="yes">


  <!-- Windows app support -->
  <meta name="msapplication-TileColor" content="#005F9E">
  <meta name="msapplication-tap-highlight" content="no">
    
    
    
    
    
    
    
    
  
  
  <link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
	<link rel="shortcut icon" href="https://framework.emiia.ai/favicon.ico" type="image/x-icon">
  

  
  <meta name="Description" content="EMIIA.AI GIS"/>
  <meta content='GIS-BIM-EDM' name='apple-mobile-web-app-title'/>
  <link content='GIS-BIM-EDM' href='https://upload.emiia.ru/emiia20.png' rel='apple-touch-icon' title='EMIIA AI — Machine Radio vision'/>
 
 
 
  
 	  <link rel="image_src" href="/emiia-cognitive-radio-optics.png"/>
  <link rel="image_src" href="https://framework.emiia.ai/emiia-cognitive-radio-optics.png"/>
  

 
 
 
<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon">
	
	
	
  
  
  
  <link rel="apple-touch-icon" sizes="180x180" href="https://www.emiia.ai/apple-touch-icon.png">
<link rel="icon" type="image/png" sizes="32x32" href="https://www.emiia.ai/favicon-32x32.png">
<link rel="icon" type="image/png" sizes="16x16" href="https://www.emiia.ai/favicon-16x16.png">



<link rel="mask-icon" href="https://www.emiia.ai/safari-pinned-tab.svg" color="#5bbad5">



<link rel='stylesheet' href='https://framework.emiia.ai/map-gl.css'>




<meta name="msapplication-TileColor" content="#2d89ef">



<meta name="theme-color" content="#f8f9fa">
  
  
  
 
  
  
<link rel="stylesheet" href="https://framework.emiia.ai/gis_button.css"> 
  

 
  
  

   <style>
body { margin: 0; padding: 0; }
#map { position: absolute; top: 0; bottom: 0; width: 100%; }

button1 {
   position: absolute;
}

    #marker1 {
        background-image: url('https://www.emiia.ai/emiia143.1.svg');
        background-size: cover;
        width: 55px;
        height: 82px;
        border-radius: 0%;
        cursor: pointer;
    }

    .mapboxgl-popup {
        max-width: 200px;
    }
    
    
    
    




  </style>
  
  
  
  	  <style>
body { margin: 0; padding: 0; }
#map { position: absolute; top: 0; bottom: 0; width: 100%; }


button1 {
   position: absolute;
}

button:focus {
outline: none !important
}

*{
outline: none !important
}

    #marker2 {
        background-image: url('');
        background-size: cover;
        width: 45px;
        height: 75px;
        border-radius: 0%;
        cursor: pointer;
    }

    .mapboxgl-popup {
        max-width: 200px;
    }


  </style>
  

  


	
	
	
	
	
    
    
  <style>  
    
    
    
    .mapboxgl-map{font:12px/20px Helvetica Neue,Arial,Helvetica,sans-serif;overflow:hidden;position:relative;-webkit-tap-highlight-color:rgba(0,0,0,0)}.mapboxgl-canvas{position:absolute;left:0;top:0}.mapboxgl-map:-webkit-full-screen{width:100%;height:100%}.mapboxgl-canary{background-color:salmon}.mapboxgl-canvas-container.mapboxgl-interactive,.mapboxgl-ctrl-group button.mapboxgl-ctrl-compass{cursor:grab;-webkit-user-select:none;user-select:none}.mapboxgl-canvas-container.mapboxgl-interactive.mapboxgl-track-pointer{cursor:pointer}.mapboxgl-canvas-container.mapboxgl-interactive:active,.mapboxgl-ctrl-group button.mapboxgl-ctrl-compass:active{cursor:grabbing}.mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate,.mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate .mapboxgl-canvas{touch-action:pan-x pan-y}.mapboxgl-canvas-container.mapboxgl-touch-drag-pan,.mapboxgl-canvas-container.mapboxgl-touch-drag-pan .mapboxgl-canvas{touch-action:pinch-zoom}.mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate.mapboxgl-touch-drag-pan,.mapboxgl-canvas-container.mapboxgl-touch-zoom-rotate.mapboxgl-touch-drag-pan .mapboxgl-canvas{touch-action:none}.mapboxgl-ctrl-bottom-left,.mapboxgl-ctrl-bottom-right,.mapboxgl-ctrl-top-left,.mapboxgl-ctrl-top-right{position:absolute;pointer-events:none;z-index:2}.mapboxgl-ctrl-top-left{top:0;left:0}.mapboxgl-ctrl-top-right{top:0;right:0}.mapboxgl-ctrl-bottom-left{bottom:0;left:0}.mapboxgl-ctrl-bottom-right{right:0;bottom:0}
    
    
    
    
    
    
    
    
    
    
    .mapboxgl-ctrl{clear:both;pointer-events:auto;transform:translate(0)}.mapboxgl-ctrl-top-left .mapboxgl-ctrl{   position: fixed;
  top: 50%;
  -webkit-transform: translateY(-50%);
  -ms-transform: translateY(-50%);
  transform: translateY(-50%);float:left}.mapboxgl-ctrl-top-right .mapboxgl-ctrl{margin:10px 10px 0 0;float:right}.mapboxgl-ctrl-bottom-left .mapboxgl-ctrl{margin:0 0 10px 10px;float:left}.mapboxgl-ctrl-bottom-right .mapboxgl-ctrl{margin:0 10px 10px 0;float:right}.mapboxgl-ctrl-group{border-radius:4px;background:#ffffffcd}.mapboxgl-ctrl-group:not(:empty){box-shadow:0 0 0 1px rgba(0,0,0,.1)
    
   
   

   
   
    
    }@media (-ms-high-contrast:active){.mapboxgl-ctrl-group:not(:empty){box-shadow:0 0 0 2px ButtonText}}.mapboxgl-ctrl-group button{width:29px;height:29px;display:block;padding:0;outline:none;border:0;box-sizing:border-box;background-color:transparent;cursor:pointer}.mapboxgl-ctrl-group button+button{border-top:1px solid #ddd}.mapboxgl-ctrl button .mapboxgl-ctrl-icon{display:block;width:100%;height:100%;background-repeat:no-repeat;background-position:50%}@media (-ms-high-contrast:active){.mapboxgl-ctrl-icon{background-color:transparent}.mapboxgl-ctrl-group button+button{border-top:1px solid ButtonText}}.mapboxgl-ctrl-attrib-button:focus,.mapboxgl-ctrl-group button:focus{box-shadow:0 0 2px 2px #0096ff}.mapboxgl-ctrl button:disabled{cursor:not-allowed}.mapboxgl-ctrl button:disabled .mapboxgl-ctrl-icon{opacity:.25}.mapboxgl-ctrl button:not(:disabled):hover{background-color:rgba(0,0,0,.05)}.mapboxgl-ctrl-group button:focus:focus-visible{box-shadow:0 0 2px 2px #0096ff}.mapboxgl-ctrl-group button:focus:not(:focus-visible){box-shadow:none}.mapboxgl-ctrl-group button:focus:first-child{border-radius:4px 4px 0 0}.mapboxgl-ctrl-group button:focus:last-child{border-radius:0 0 4px 4px}.mapboxgl-ctrl-group button:focus:only-child{border-radius:inherit}
    
    
    
    
 
    .mapboxgl-ctrl button.mapboxgl-ctrl-zoom-in .mapboxgl-ctrl-icon{background-image:url("https://analytics.emiia.ai/svg/strelka7.svg")}
    
    
    
        .mapboxgl-ctrl button.mapboxgl-ctrl-zoom-out .mapboxgl-ctrl-icon{background-image:url("https://analytics.emiia.ai/svg/search.svg")}
    
    
    
    
    @media (-ms-high-contrast:active){.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-out .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23fff'%3E %3Cpath d='M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-9z'/%3E %3C/svg%3E")}
    
    
    
    .mapboxgl-ctrl button.mapboxgl-ctrl-zoom-in .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23fff'%3E %3Cpath d='M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5z'/%3E %3C/svg%3E")}}@media (-ms-high-contrast:black-on-white){.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-out .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23000'%3E %3Cpath d='M10 13c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h9c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-9z'/%3E %3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-zoom-in .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23000'%3E %3Cpath d='M14.5 8.5c-.75 0-1.5.75-1.5 1.5v3h-3c-.75 0-1.5.75-1.5 1.5S9.25 16 10 16h3v3c0 .75.75 1.5 1.5 1.5S16 19.75 16 19v-3h3c.75 0 1.5-.75 1.5-1.5S19.75 13 19 13h-3v-3c0-.75-.75-1.5-1.5-1.5z'/%3E %3C/svg%3E")}}.mapboxgl-ctrl button.mapboxgl-ctrl-fullscreen .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23333'%3E %3Cpath d='M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3h1zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16h1zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5H13zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1V7.5z'/%3E %3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-shrink .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg'%3E %3Cpath d='M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1h-5.5zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1v-5.5zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1v5.5zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1h5.5z'/%3E %3C/svg%3E")}@media (-ms-high-contrast:active){.mapboxgl-ctrl button.mapboxgl-ctrl-fullscreen .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23fff'%3E %3Cpath d='M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3h1zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16h1zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5H13zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1V7.5z'/%3E %3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-shrink .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23fff'%3E %3Cpath d='M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1h-5.5zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1v-5.5zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1v5.5zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1h5.5z'/%3E %3C/svg%3E")}}@media (-ms-high-contrast:black-on-white){.mapboxgl-ctrl button.mapboxgl-ctrl-fullscreen .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23000'%3E %3Cpath d='M24 16v5.5c0 1.75-.75 2.5-2.5 2.5H16v-1l3-1.5-4-5.5 1-1 5.5 4 1.5-3h1zM6 16l1.5 3 5.5-4 1 1-4 5.5 3 1.5v1H7.5C5.75 24 5 23.25 5 21.5V16h1zm7-11v1l-3 1.5 4 5.5-1 1-5.5-4L6 13H5V7.5C5 5.75 5.75 5 7.5 5H13zm11 2.5c0-1.75-.75-2.5-2.5-2.5H16v1l3 1.5-4 5.5 1 1 5.5-4 1.5 3h1V7.5z'/%3E %3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-shrink .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23000'%3E %3Cpath d='M18.5 16c-1.75 0-2.5.75-2.5 2.5V24h1l1.5-3 5.5 4 1-1-4-5.5 3-1.5v-1h-5.5zM13 18.5c0-1.75-.75-2.5-2.5-2.5H5v1l3 1.5L4 24l1 1 5.5-4 1.5 3h1v-5.5zm3-8c0 1.75.75 2.5 2.5 2.5H24v-1l-3-1.5L25 5l-1-1-5.5 4L17 5h-1v5.5zM10.5 13c1.75 0 2.5-.75 2.5-2.5V5h-1l-1.5 3L5 4 4 5l4 5.5L5 12v1h5.5z'/%3E %3C/svg%3E")}}.mapboxgl-ctrl button.mapboxgl-ctrl-compass .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23333'%3E %3Cpath d='M10.5 14l4-8 4 8h-8z'/%3E %3Cpath id='south' d='M10.5 16l4 8 4-8h-8z' fill='%23ccc'/%3E %3C/svg%3E")}@media (-ms-high-contrast:active){.mapboxgl-ctrl button.mapboxgl-ctrl-compass .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23fff'%3E %3Cpath d='M10.5 14l4-8 4 8h-8z'/%3E %3Cpath id='south' d='M10.5 16l4 8 4-8h-8z' fill='%23999'/%3E %3C/svg%3E")}}@media (-ms-high-contrast:black-on-white){.mapboxgl-ctrl button.mapboxgl-ctrl-compass .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 29 29' xmlns='http://www.w3.org/2000/svg' fill='%23000'%3E %3Cpath d='M10.5 14l4-8 4 8h-8z'/%3E %3Cpath id='south' d='M10.5 16l4 8 4-8h-8z' fill='%23ccc'/%3E %3C/svg%3E")}}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23333'%3E %3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E %3Ccircle id='dot' cx='10' cy='10' r='2'/%3E %3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' display='none'/%3E %3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate:disabled .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23aaa'%3E %3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E %3Ccircle id='dot' cx='10' cy='10' r='2'/%3E %3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' fill='red'/%3E %3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-active .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%2333b5e5'%3E %3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E %3Ccircle id='dot' cx='10' cy='10' r='2'/%3E %3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' display='none'/%3E %3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-active-error .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23e58978'%3E %3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E %3Ccircle id='dot' cx='10' cy='10' r='2'/%3E %3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' display='none'/%3E %3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-background .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%2333b5e5'%3E %3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E %3Ccircle id='dot' cx='10' cy='10' r='2' display='none'/%3E %3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' display='none'/%3E %3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-background-error .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23e54e33'%3E %3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E %3Ccircle id='dot' cx='10' cy='10' r='2' display='none'/%3E %3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' display='none'/%3E %3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-waiting .mapboxgl-ctrl-icon{animation:mapboxgl-spin 2s linear infinite}@media (-ms-high-contrast:active){.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23fff'%3E %3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E %3Ccircle id='dot' cx='10' cy='10' r='2'/%3E %3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' display='none'/%3E %3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate:disabled .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23999'%3E %3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E %3Ccircle id='dot' cx='10' cy='10' r='2'/%3E %3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' fill='red'/%3E %3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-active .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%2333b5e5'%3E %3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E %3Ccircle id='dot' cx='10' cy='10' r='2'/%3E %3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' display='none'/%3E %3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-active-error .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23e58978'%3E %3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E %3Ccircle id='dot' cx='10' cy='10' r='2'/%3E %3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' display='none'/%3E %3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-background .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%2333b5e5'%3E %3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E %3Ccircle id='dot' cx='10' cy='10' r='2' display='none'/%3E %3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' display='none'/%3E %3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate.mapboxgl-ctrl-geolocate-background-error .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23e54e33'%3E %3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E %3Ccircle id='dot' cx='10' cy='10' r='2' display='none'/%3E %3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' display='none'/%3E %3C/svg%3E")}}@media (-ms-high-contrast:black-on-white){.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23000'%3E %3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E %3Ccircle id='dot' cx='10' cy='10' r='2'/%3E %3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' display='none'/%3E %3C/svg%3E")}.mapboxgl-ctrl button.mapboxgl-ctrl-geolocate:disabled .mapboxgl-ctrl-icon{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='29' height='29' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill='%23666'%3E %3Cpath d='M10 4C9 4 9 5 9 5v.1A5 5 0 0 0 5.1 9H5s-1 0-1 1 1 1 1 1h.1A5 5 0 0 0 9 14.9v.1s0 1 1 1 1-1 1-1v-.1a5 5 0 0 0 3.9-3.9h.1s1 0 1-1-1-1-1-1h-.1A5 5 0 0 0 11 5.1V5s0-1-1-1zm0 2.5a3.5 3.5 0 1 1 0 7 3.5 3.5 0 1 1 0-7z'/%3E %3Ccircle id='dot' cx='10' cy='10' r='2'/%3E %3Cpath id='stroke' d='M14 5l1 1-9 9-1-1 9-9z' fill='red'/%3E %3C/svg%3E")}}@keyframes mapboxgl-spin{0%{transform:rotate(0deg)}to{transform:rotate(1turn)}}a.mapboxgl-ctrl-logo{width:88px;height:23px;margin:0 0 -4px -4px;display:block;background-repeat:no-repeat;cursor:pointer;overflow:hidden;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='88' height='23' viewBox='0 0 88 23' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' fill-rule='evenodd'%3E %3Cdefs%3E %3Cpath id='logo' d='M11.5 2.25c5.105 0 9.25 4.145 9.25 9.25s-4.145 9.25-9.25 9.25-9.25-4.145-9.25-9.25 4.145-9.25 9.25-9.25zM6.997 15.983c-.051-.338-.828-5.802 2.233-8.873a4.395 4.395 0 013.13-1.28c1.27 0 2.49.51 3.39 1.42.91.9 1.42 2.12 1.42 3.39 0 1.18-.449 2.301-1.28 3.13C12.72 16.93 7 16 7 16l-.003-.017zM15.3 10.5l-2 .8-.8 2-.8-2-2-.8 2-.8.8-2 .8 2 2 .8z'/%3E %3Cpath id='text' d='M50.63 8c.13 0 .23.1.23.23V9c.7-.76 1.7-1.18 2.73-1.18 2.17 0 3.95 1.85 3.95 4.17s-1.77 4.19-3.94 4.19c-1.04 0-2.03-.43-2.74-1.18v3.77c0 .13-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V8.23c0-.12.1-.23.23-.23h1.4zm-3.86.01c.01 0 .01 0 .01-.01.13 0 .22.1.22.22v7.55c0 .12-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V15c-.7.76-1.69 1.19-2.73 1.19-2.17 0-3.94-1.87-3.94-4.19 0-2.32 1.77-4.19 3.94-4.19 1.03 0 2.02.43 2.73 1.18v-.75c0-.12.1-.23.23-.23h1.4zm26.375-.19a4.24 4.24 0 00-4.16 3.29c-.13.59-.13 1.19 0 1.77a4.233 4.233 0 004.17 3.3c2.35 0 4.26-1.87 4.26-4.19 0-2.32-1.9-4.17-4.27-4.17zM60.63 5c.13 0 .23.1.23.23v3.76c.7-.76 1.7-1.18 2.73-1.18 1.88 0 3.45 1.4 3.84 3.28.13.59.13 1.2 0 1.8-.39 1.88-1.96 3.29-3.84 3.29-1.03 0-2.02-.43-2.73-1.18v.77c0 .12-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V5.23c0-.12.1-.23.23-.23h1.4zm-34 11h-1.4c-.13 0-.23-.11-.23-.23V8.22c.01-.13.1-.22.23-.22h1.4c.13 0 .22.11.23.22v.68c.5-.68 1.3-1.09 2.16-1.1h.03c1.09 0 2.09.6 2.6 1.55.45-.95 1.4-1.55 2.44-1.56 1.62 0 2.93 1.25 2.9 2.78l.03 5.2c0 .13-.1.23-.23.23h-1.41c-.13 0-.23-.11-.23-.23v-4.59c0-.98-.74-1.71-1.62-1.71-.8 0-1.46.7-1.59 1.62l.01 4.68c0 .13-.11.23-.23.23h-1.41c-.13 0-.23-.11-.23-.23v-4.59c0-.98-.74-1.71-1.62-1.71-.85 0-1.54.79-1.6 1.8v4.5c0 .13-.1.23-.23.23zm53.615 0h-1.61c-.04 0-.08-.01-.12-.03-.09-.06-.13-.19-.06-.28l2.43-3.71-2.39-3.65a.213.213 0 01-.03-.12c0-.12.09-.21.21-.21h1.61c.13 0 .24.06.3.17l1.41 2.37 1.4-2.37a.34.34 0 01.3-.17h1.6c.04 0 .08.01.12.03.09.06.13.19.06.28l-2.37 3.65 2.43 3.7c0 .05.01.09.01.13 0 .12-.09.21-.21.21h-1.61c-.13 0-.24-.06-.3-.17l-1.44-2.42-1.44 2.42a.34.34 0 01-.3.17zm-7.12-1.49c-1.33 0-2.42-1.12-2.42-2.51 0-1.39 1.08-2.52 2.42-2.52 1.33 0 2.42 1.12 2.42 2.51 0 1.39-1.08 2.51-2.42 2.52zm-19.865 0c-1.32 0-2.39-1.11-2.42-2.48v-.07c.02-1.38 1.09-2.49 2.4-2.49 1.32 0 2.41 1.12 2.41 2.51 0 1.39-1.07 2.52-2.39 2.53zm-8.11-2.48c-.01 1.37-1.09 2.47-2.41 2.47s-2.42-1.12-2.42-2.51c0-1.39 1.08-2.52 2.4-2.52 1.33 0 2.39 1.11 2.41 2.48l.02.08zm18.12 2.47c-1.32 0-2.39-1.11-2.41-2.48v-.06c.02-1.38 1.09-2.48 2.41-2.48s2.42 1.12 2.42 2.51c0 1.39-1.09 2.51-2.42 2.51z'/%3E %3C/defs%3E %3Cmask id='clip'%3E %3Crect x='0' y='0' width='100%25' height='100%25' fill='white'/%3E %3Cuse xlink:href='%23logo'/%3E %3Cuse xlink:href='%23text'/%3E %3C/mask%3E %3Cg id='outline' opacity='0.3' stroke='%23000' stroke-width='3'%3E %3Ccircle mask='url(%23clip)' cx='11.5' cy='11.5' r='9.25'/%3E %3Cuse xlink:href='%23text' mask='url(%23clip)'/%3E %3C/g%3E %3Cg id='fill' opacity='0.9' fill='%23fff'%3E %3Cuse xlink:href='%23logo'/%3E %3Cuse xlink:href='%23text'/%3E %3C/g%3E %3C/svg%3E")}a.mapboxgl-ctrl-logo.mapboxgl-compact{width:23px}@media (-ms-high-contrast:active){a.mapboxgl-ctrl-logo{background-color:transparent;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='88' height='23' viewBox='0 0 88 23' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' fill-rule='evenodd'%3E %3Cdefs%3E %3Cpath id='logo' d='M11.5 2.25c5.105 0 9.25 4.145 9.25 9.25s-4.145 9.25-9.25 9.25-9.25-4.145-9.25-9.25 4.145-9.25 9.25-9.25zM6.997 15.983c-.051-.338-.828-5.802 2.233-8.873a4.395 4.395 0 013.13-1.28c1.27 0 2.49.51 3.39 1.42.91.9 1.42 2.12 1.42 3.39 0 1.18-.449 2.301-1.28 3.13C12.72 16.93 7 16 7 16l-.003-.017zM15.3 10.5l-2 .8-.8 2-.8-2-2-.8 2-.8.8-2 .8 2 2 .8z'/%3E %3Cpath id='text' d='M50.63 8c.13 0 .23.1.23.23V9c.7-.76 1.7-1.18 2.73-1.18 2.17 0 3.95 1.85 3.95 4.17s-1.77 4.19-3.94 4.19c-1.04 0-2.03-.43-2.74-1.18v3.77c0 .13-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V8.23c0-.12.1-.23.23-.23h1.4zm-3.86.01c.01 0 .01 0 .01-.01.13 0 .22.1.22.22v7.55c0 .12-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V15c-.7.76-1.69 1.19-2.73 1.19-2.17 0-3.94-1.87-3.94-4.19 0-2.32 1.77-4.19 3.94-4.19 1.03 0 2.02.43 2.73 1.18v-.75c0-.12.1-.23.23-.23h1.4zm26.375-.19a4.24 4.24 0 00-4.16 3.29c-.13.59-.13 1.19 0 1.77a4.233 4.233 0 004.17 3.3c2.35 0 4.26-1.87 4.26-4.19 0-2.32-1.9-4.17-4.27-4.17zM60.63 5c.13 0 .23.1.23.23v3.76c.7-.76 1.7-1.18 2.73-1.18 1.88 0 3.45 1.4 3.84 3.28.13.59.13 1.2 0 1.8-.39 1.88-1.96 3.29-3.84 3.29-1.03 0-2.02-.43-2.73-1.18v.77c0 .12-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V5.23c0-.12.1-.23.23-.23h1.4zm-34 11h-1.4c-.13 0-.23-.11-.23-.23V8.22c.01-.13.1-.22.23-.22h1.4c.13 0 .22.11.23.22v.68c.5-.68 1.3-1.09 2.16-1.1h.03c1.09 0 2.09.6 2.6 1.55.45-.95 1.4-1.55 2.44-1.56 1.62 0 2.93 1.25 2.9 2.78l.03 5.2c0 .13-.1.23-.23.23h-1.41c-.13 0-.23-.11-.23-.23v-4.59c0-.98-.74-1.71-1.62-1.71-.8 0-1.46.7-1.59 1.62l.01 4.68c0 .13-.11.23-.23.23h-1.41c-.13 0-.23-.11-.23-.23v-4.59c0-.98-.74-1.71-1.62-1.71-.85 0-1.54.79-1.6 1.8v4.5c0 .13-.1.23-.23.23zm53.615 0h-1.61c-.04 0-.08-.01-.12-.03-.09-.06-.13-.19-.06-.28l2.43-3.71-2.39-3.65a.213.213 0 01-.03-.12c0-.12.09-.21.21-.21h1.61c.13 0 .24.06.3.17l1.41 2.37 1.4-2.37a.34.34 0 01.3-.17h1.6c.04 0 .08.01.12.03.09.06.13.19.06.28l-2.37 3.65 2.43 3.7c0 .05.01.09.01.13 0 .12-.09.21-.21.21h-1.61c-.13 0-.24-.06-.3-.17l-1.44-2.42-1.44 2.42a.34.34 0 01-.3.17zm-7.12-1.49c-1.33 0-2.42-1.12-2.42-2.51 0-1.39 1.08-2.52 2.42-2.52 1.33 0 2.42 1.12 2.42 2.51 0 1.39-1.08 2.51-2.42 2.52zm-19.865 0c-1.32 0-2.39-1.11-2.42-2.48v-.07c.02-1.38 1.09-2.49 2.4-2.49 1.32 0 2.41 1.12 2.41 2.51 0 1.39-1.07 2.52-2.39 2.53zm-8.11-2.48c-.01 1.37-1.09 2.47-2.41 2.47s-2.42-1.12-2.42-2.51c0-1.39 1.08-2.52 2.4-2.52 1.33 0 2.39 1.11 2.41 2.48l.02.08zm18.12 2.47c-1.32 0-2.39-1.11-2.41-2.48v-.06c.02-1.38 1.09-2.48 2.41-2.48s2.42 1.12 2.42 2.51c0 1.39-1.09 2.51-2.42 2.51z'/%3E %3C/defs%3E %3Cmask id='clip'%3E %3Crect x='0' y='0' width='100%25' height='100%25' fill='white'/%3E %3Cuse xlink:href='%23logo'/%3E %3Cuse xlink:href='%23text'/%3E %3C/mask%3E %3Cg id='outline' opacity='1' stroke='%23000' stroke-width='3'%3E %3Ccircle mask='url(%23clip)' cx='11.5' cy='11.5' r='9.25'/%3E %3Cuse xlink:href='%23text' mask='url(%23clip)'/%3E %3C/g%3E %3Cg id='fill' opacity='1' fill='%23fff'%3E %3Cuse xlink:href='%23logo'/%3E %3Cuse xlink:href='%23text'/%3E %3C/g%3E %3C/svg%3E")}}@media (-ms-high-contrast:black-on-white){a.mapboxgl-ctrl-logo{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='88' height='23' viewBox='0 0 88 23' xmlns='http://www.w3.org/2000/svg' xmlns:xlink='http://www.w3.org/1999/xlink' fill-rule='evenodd'%3E %3Cdefs%3E %3Cpath id='logo' d='M11.5 2.25c5.105 0 9.25 4.145 9.25 9.25s-4.145 9.25-9.25 9.25-9.25-4.145-9.25-9.25 4.145-9.25 9.25-9.25zM6.997 15.983c-.051-.338-.828-5.802 2.233-8.873a4.395 4.395 0 013.13-1.28c1.27 0 2.49.51 3.39 1.42.91.9 1.42 2.12 1.42 3.39 0 1.18-.449 2.301-1.28 3.13C12.72 16.93 7 16 7 16l-.003-.017zM15.3 10.5l-2 .8-.8 2-.8-2-2-.8 2-.8.8-2 .8 2 2 .8z'/%3E %3Cpath id='text' d='M50.63 8c.13 0 .23.1.23.23V9c.7-.76 1.7-1.18 2.73-1.18 2.17 0 3.95 1.85 3.95 4.17s-1.77 4.19-3.94 4.19c-1.04 0-2.03-.43-2.74-1.18v3.77c0 .13-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V8.23c0-.12.1-.23.23-.23h1.4zm-3.86.01c.01 0 .01 0 .01-.01.13 0 .22.1.22.22v7.55c0 .12-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V15c-.7.76-1.69 1.19-2.73 1.19-2.17 0-3.94-1.87-3.94-4.19 0-2.32 1.77-4.19 3.94-4.19 1.03 0 2.02.43 2.73 1.18v-.75c0-.12.1-.23.23-.23h1.4zm26.375-.19a4.24 4.24 0 00-4.16 3.29c-.13.59-.13 1.19 0 1.77a4.233 4.233 0 004.17 3.3c2.35 0 4.26-1.87 4.26-4.19 0-2.32-1.9-4.17-4.27-4.17zM60.63 5c.13 0 .23.1.23.23v3.76c.7-.76 1.7-1.18 2.73-1.18 1.88 0 3.45 1.4 3.84 3.28.13.59.13 1.2 0 1.8-.39 1.88-1.96 3.29-3.84 3.29-1.03 0-2.02-.43-2.73-1.18v.77c0 .12-.1.23-.23.23h-1.4c-.13 0-.23-.1-.23-.23V5.23c0-.12.1-.23.23-.23h1.4zm-34 11h-1.4c-.13 0-.23-.11-.23-.23V8.22c.01-.13.1-.22.23-.22h1.4c.13 0 .22.11.23.22v.68c.5-.68 1.3-1.09 2.16-1.1h.03c1.09 0 2.09.6 2.6 1.55.45-.95 1.4-1.55 2.44-1.56 1.62 0 2.93 1.25 2.9 2.78l.03 5.2c0 .13-.1.23-.23.23h-1.41c-.13 0-.23-.11-.23-.23v-4.59c0-.98-.74-1.71-1.62-1.71-.8 0-1.46.7-1.59 1.62l.01 4.68c0 .13-.11.23-.23.23h-1.41c-.13 0-.23-.11-.23-.23v-4.59c0-.98-.74-1.71-1.62-1.71-.85 0-1.54.79-1.6 1.8v4.5c0 .13-.1.23-.23.23zm53.615 0h-1.61c-.04 0-.08-.01-.12-.03-.09-.06-.13-.19-.06-.28l2.43-3.71-2.39-3.65a.213.213 0 01-.03-.12c0-.12.09-.21.21-.21h1.61c.13 0 .24.06.3.17l1.41 2.37 1.4-2.37a.34.34 0 01.3-.17h1.6c.04 0 .08.01.12.03.09.06.13.19.06.28l-2.37 3.65 2.43 3.7c0 .05.01.09.01.13 0 .12-.09.21-.21.21h-1.61c-.13 0-.24-.06-.3-.17l-1.44-2.42-1.44 2.42a.34.34 0 01-.3.17zm-7.12-1.49c-1.33 0-2.42-1.12-2.42-2.51 0-1.39 1.08-2.52 2.42-2.52 1.33 0 2.42 1.12 2.42 2.51 0 1.39-1.08 2.51-2.42 2.52zm-19.865 0c-1.32 0-2.39-1.11-2.42-2.48v-.07c.02-1.38 1.09-2.49 2.4-2.49 1.32 0 2.41 1.12 2.41 2.51 0 1.39-1.07 2.52-2.39 2.53zm-8.11-2.48c-.01 1.37-1.09 2.47-2.41 2.47s-2.42-1.12-2.42-2.51c0-1.39 1.08-2.52 2.4-2.52 1.33 0 2.39 1.11 2.41 2.48l.02.08zm18.12 2.47c-1.32 0-2.39-1.11-2.41-2.48v-.06c.02-1.38 1.09-2.48 2.41-2.48s2.42 1.12 2.42 2.51c0 1.39-1.09 2.51-2.42 2.51z'/%3E %3C/defs%3E %3Cmask id='clip'%3E %3Crect x='0' y='0' width='100%25' height='100%25' fill='white'/%3E %3Cuse xlink:href='%23logo'/%3E %3Cuse xlink:href='%23text'/%3E %3C/mask%3E %3Cg id='outline' opacity='1' stroke='%23fff' stroke-width='3' fill='%23fff'%3E %3Ccircle mask='url(%23clip)' cx='11.5' cy='11.5' r='9.25'/%3E %3Cuse xlink:href='%23text' mask='url(%23clip)'/%3E %3C/g%3E %3Cg id='fill' opacity='1' fill='%23000'%3E %3Cuse xlink:href='%23logo'/%3E %3Cuse xlink:href='%23text'/%3E %3C/g%3E %3C/svg%3E")}}.mapboxgl-ctrl.mapboxgl-ctrl-attrib{padding:0 5px;background-color:hsla(0,0%,100%,.5);margin:0}@media screen{.mapboxgl-ctrl-attrib.mapboxgl-compact{min-height:20px;padding:2px 24px 2px 0;margin:10px;position:relative;background-color:#fff;border-radius:12px}.mapboxgl-ctrl-attrib.mapboxgl-compact-show{padding:2px 28px 2px 8px;visibility:visible}.mapboxgl-ctrl-bottom-left>.mapboxgl-ctrl-attrib.mapboxgl-compact-show,.mapboxgl-ctrl-top-left>.mapboxgl-ctrl-attrib.mapboxgl-compact-show{padding:2px 8px 2px 28px;border-radius:12px}.mapboxgl-ctrl-attrib.mapboxgl-compact .mapboxgl-ctrl-attrib-inner{display:none}.mapboxgl-ctrl-attrib-button{display:none;cursor:pointer;position:absolute;background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill-rule='evenodd'%3E %3Cpath d='M4 10a6 6 0 1 0 12 0 6 6 0 1 0-12 0m5-3a1 1 0 1 0 2 0 1 1 0 1 0-2 0m0 3a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0'/%3E %3C/svg%3E");background-color:hsla(0,0%,100%,.5);width:24px;height:24px;box-sizing:border-box;border-radius:12px;outline:none;top:0;right:0;border:0}.mapboxgl-ctrl-bottom-left .mapboxgl-ctrl-attrib-button,.mapboxgl-ctrl-top-left .mapboxgl-ctrl-attrib-button{left:0}.mapboxgl-ctrl-attrib.mapboxgl-compact-show .mapboxgl-ctrl-attrib-inner,.mapboxgl-ctrl-attrib.mapboxgl-compact .mapboxgl-ctrl-attrib-button{display:block}.mapboxgl-ctrl-attrib.mapboxgl-compact-show .mapboxgl-ctrl-attrib-button{background-color:rgba(0,0,0,.05)}.mapboxgl-ctrl-bottom-right>.mapboxgl-ctrl-attrib.mapboxgl-compact:after{bottom:0;right:0}.mapboxgl-ctrl-top-right>.mapboxgl-ctrl-attrib.mapboxgl-compact:after{top:0;right:0}.mapboxgl-ctrl-top-left>.mapboxgl-ctrl-attrib.mapboxgl-compact:after{top:0;left:0}.mapboxgl-ctrl-bottom-left>.mapboxgl-ctrl-attrib.mapboxgl-compact:after{bottom:0;left:0}}@media screen and (-ms-high-contrast:active){.mapboxgl-ctrl-attrib.mapboxgl-compact:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill-rule='evenodd' fill='%23fff'%3E %3Cpath d='M4 10a6 6 0 1 0 12 0 6 6 0 1 0-12 0m5-3a1 1 0 1 0 2 0 1 1 0 1 0-2 0m0 3a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0'/%3E %3C/svg%3E")}}@media screen and (-ms-high-contrast:black-on-white){.mapboxgl-ctrl-attrib.mapboxgl-compact:after{background-image:url("data:image/svg+xml;charset=utf-8,%3Csvg width='24' height='24' viewBox='0 0 20 20' xmlns='http://www.w3.org/2000/svg' fill-rule='evenodd'%3E %3Cpath d='M4 10a6 6 0 1 0 12 0 6 6 0 1 0-12 0m5-3a1 1 0 1 0 2 0 1 1 0 1 0-2 0m0 3a1 1 0 1 1 2 0v3a1 1 0 1 1-2 0'/%3E %3C/svg%3E")}}.mapboxgl-ctrl-attrib a{color:rgba(0,0,0,.75);text-decoration:none}.mapboxgl-ctrl-attrib a:hover{color:inherit;text-decoration:underline}.mapboxgl-ctrl-attrib .mapbox-improve-map{font-weight:700;margin-left:2px}.mapboxgl-attrib-empty{display:none}.mapboxgl-ctrl-scale{background-color:hsla(0,0%,100%,.75);font-size:10px;border:2px solid #333;border-top:#333;padding:0 5px;color:#333;box-sizing:border-box}.mapboxgl-popup{position:absolute;top:0;left:0;display:flex;will-change:transform;pointer-events:none}.mapboxgl-popup-anchor-top,.mapboxgl-popup-anchor-top-left,.mapboxgl-popup-anchor-top-right{flex-direction:column}.mapboxgl-popup-anchor-bottom,.mapboxgl-popup-anchor-bottom-left,.mapboxgl-popup-anchor-bottom-right{flex-direction:column-reverse}.mapboxgl-popup-anchor-left{flex-direction:row}.mapboxgl-popup-anchor-right{flex-direction:row-reverse}.mapboxgl-popup-tip{width:0;height:0;border:10px solid transparent;z-index:1}.mapboxgl-popup-anchor-top .mapboxgl-popup-tip{align-self:center;border-top:none;border-bottom-color:#fff}.mapboxgl-popup-anchor-top-left .mapboxgl-popup-tip{align-self:flex-start;border-top:none;border-left:none;border-bottom-color:#fff}.mapboxgl-popup-anchor-top-right .mapboxgl-popup-tip{align-self:flex-end;border-top:none;border-right:none;border-bottom-color:#fff}.mapboxgl-popup-anchor-bottom .mapboxgl-popup-tip{align-self:center;border-bottom:none;border-top-color:#fff}.mapboxgl-popup-anchor-bottom-left .mapboxgl-popup-tip{align-self:flex-start;border-bottom:none;border-left:none;border-top-color:#fff}.mapboxgl-popup-anchor-bottom-right .mapboxgl-popup-tip{align-self:flex-end;border-bottom:none;border-right:none;border-top-color:#fff}.mapboxgl-popup-anchor-left .mapboxgl-popup-tip{align-self:center;border-left:none;border-right-color:#fff}.mapboxgl-popup-anchor-right .mapboxgl-popup-tip{align-self:center;border-right:none;border-left-color:#fff}.mapboxgl-popup-close-button{position:absolute;right:0;top:0;border:0;border-radius:0 3px 0 0;cursor:pointer;background-color:transparent}.mapboxgl-popup-close-button:hover{background-color:rgba(0,0,0,.05)}.mapboxgl-popup-content{position:relative;background:#fff;border-radius:3px;box-shadow:0 1px 2px rgba(0,0,0,.1);padding:10px 10px 15px;pointer-events:auto}.mapboxgl-popup-anchor-top-left .mapboxgl-popup-content{border-top-left-radius:0}.mapboxgl-popup-anchor-top-right .mapboxgl-popup-content{border-top-right-radius:0}.mapboxgl-popup-anchor-bottom-left .mapboxgl-popup-content{border-bottom-left-radius:0}.mapboxgl-popup-anchor-bottom-right .mapboxgl-popup-content{border-bottom-right-radius:0}.mapboxgl-popup-track-pointer{display:none}.mapboxgl-popup-track-pointer *{pointer-events:none;user-select:none}.mapboxgl-map:hover .mapboxgl-popup-track-pointer{display:flex}.mapboxgl-map:active .mapboxgl-popup-track-pointer{display:none}.mapboxgl-marker{position:absolute;top:0;left:0;will-change:transform;opacity:1;transition:opacity .2s}.mapboxgl-marker-occluded{opacity:.2}.mapboxgl-user-location-dot,.mapboxgl-user-location-dot:before{background-color:#1da1f2;width:15px;height:15px;border-radius:50%}.mapboxgl-user-location-dot:before{content:"";position:absolute;animation:mapboxgl-user-location-dot-pulse 2s infinite}.mapboxgl-user-location-dot:after{border-radius:50%;border:2px solid #fff;content:"";height:19px;left:-2px;position:absolute;top:-2px;width:19px;box-sizing:border-box;box-shadow:0 0 3px rgba(0,0,0,.35)}@keyframes mapboxgl-user-location-dot-pulse{0%{transform:scale(1);opacity:1}70%{transform:scale(3);opacity:0}to{transform:scale(1);opacity:0}}.mapboxgl-user-location-dot-stale{background-color:#aaa}.mapboxgl-user-location-dot-stale:after{display:none}.mapboxgl-user-location-accuracy-circle{background-color:rgba(29,161,242,.2);width:1px;height:1px;border-radius:100%}.mapboxgl-crosshair,.mapboxgl-crosshair .mapboxgl-interactive,.mapboxgl-crosshair .mapboxgl-interactive:active{cursor:crosshair}.mapboxgl-boxzoom{position:absolute;top:0;left:0;width:0;height:0;background:#fff;border:2px dotted #202020;opacity:.5}@media print{.mapbox-improve-map{display:none}}
    
    
    
    
    
   </style> 
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
    
	



	
	
	
	<style>
	
        body { margin:0; padding:0; }
        #map { position:absolute; top:0; bottom:0; width:100%; }




body {
  background: #f8f9fa;
  height: 100vh;
  overflow: hidden;
  width: 100vw;
  $filter: brightness(1) contrast(1) hue-rotate(0deg) invert(0%); 
  -webkit-filter: $filter;
  filter: $filter;
}

#map {
  // Filters for satellite view
  // Grayscale version
  //$filter: grayscale(100%) brightness(0.9) contrast(1.3);
  // Rich colors version (fake colors)
  //$filter: brightness(0.9) contrast(1.3) hue-rotate(67.5deg) invert(12.5%); 
  //-webkit-filter: $filter;
  //filter: $filter;
  height: 120vh;
  left: 0vw;
  position: absolute;
  top: 0vh;
  width: 120vw;
  z-index: 0;
}

.map-overlay {
  color: white;
  font: 12px/20px "Open Sans Bold", 'Helvetica Neue', Arial, Helvetica, sans-serif;
  position: absolute;
  width: 20vw;
  bottom: 2.5vh;
  right: 2.5vw;
  text-transform: uppercase;
  padding: 0;
  z-index: 1;
}

.map-overlay .map-overlay-inner {
  padding: 0;
}

.map-overlay .legend .bar {
    height: 10px;
  display: inline-block;
}

.map-overlay input {
    background-color: transparent;
    display: inline-block;
    width: 100%;
    position: relative;
    margin: 0 0 1.5em 0;
    cursor: ew-resize;
}

progress {
  -webkit-appearance: none;
  -moz-appearance: none;
  appearance: none;
  background: none;
  border: none;
  height: 0.5vh;
  left: 0;
  position: absolute;
  bottom: 0;
  width: 100vw;
  z-index: 2;
}

progress::-webkit-progress-bar {
  background: rgba(0, 0, 0, 0.5);
}

progress::-webkit-progress-value {
  background: rgba(255, 255, 255, 0.5);
}





	
	</style>
	
	
	
	
	
	
	
	
	
	


</head>

<body>
<div id="map"></div>

  <script src='https://framework.emiia.ai/map-gl.js'></script>












<script>






mapboxgl.accessToken = 'pk.eyJ1IjoiZW1paWFhaSIsImEiOiJja21icnU4bHkyNGRwMnFrbjVvNXdtdGJ0In0.TcfxV21Ov7zOgvWvgPxzlA';

var monument1 = [37.17402239557072, 55.97723794736996];

var monument2 = [37.24402239557072, 55.97723794736996];





    var map = new mapboxgl.Map({
        style: 'mapbox://styles/emiiaai/ckofqwhvv1ujy17p27p0a6cr8',
        center: [37.6097, 55.7701],
        
        
        
        zoom: 9.25,
        pitch: 40,
        bearing: 0,
        container: 'map',
        antialias: true
    });
    
  
  
  
  
  // Add zoom and rotation controls to the map.
var nav = new mapboxgl.NavigationControl();
map.addControl(nav, 'top-left');

  popup = new mapboxgl.Popup({
      closeOnClick: false,
      closeButton: false,
      anchor: 'bottom-left',
    })
  
  
  
  
  
  class GeolocateControlWrapper extends mapboxgl.GeolocateControl {
  constructor() {
    super()
  }
  _onSuccess(position) {
    this._map.flyTo({
      center: [position.coords.longitude, position.coords.latitude],
      zoom: 17,
      bearing: 0,
      pitch: 0
    })

    this.fire('geolocate', position)
    this._finish()
  }
}

map.addControl(new GeolocateControlWrapper({
  positionOptions: {
    enableHighAccuracy: true,
    timeout: 300
  },
  watchPosition: true
}), 'top-left')
  
  
  












        
           // create the popup
    var popup = new mapboxgl.Popup({ offset: 25 }).setText(
        'EMIIA.AI MACHINE RADIO VISION'
    );

    // create DOM element for the marker
    var el = document.createElement('div');
    el.id = 'marker1';

    // create the marker
    new mapboxgl.Marker(el)
        .setLngLat(monument1)
        .setPopup(popup) // sets a popup on this marker
        .addTo(map); 
        
        
        
        
        
    
    
    
        
                   // create the popup
    var popup = new mapboxgl.Popup({ offset: 25 }).setText(
        'EMIIA.AI MACHINE RADIO VISION'
    );

    // create DOM element for the marker
    var el = document.createElement('div');
    el.id = 'marker2';

    // create the marker
    new mapboxgl.Marker(el)
        .setLngLat(monument2)
        .setPopup(popup) // sets a popup on this marker
        .addTo(map); 
        
        
        
        
        
        
    
    
    
    
    

    map.on('load', function () {
        // Insert the layer beneath any symbol layer.
        var layers = map.getStyle().layers;
        var labelLayerId;
        for (var i = 0; i < layers.length; i++) {
            if (layers[i].type === 'symbol' && layers[i].layout['text-field']) {
                labelLayerId = layers[i].id;
                break;
            }
        }

        // The 'building' layer in the Mapbox Streets
        // vector tileset contains building height data
        // from OpenStreetMap.
        map.addLayer(
            {
                'id': 'add-3d-buildings',
                'source': 'composite',
                'source-layer': 'building',
                'filter': ['==', 'extrude', 'true'],
                'type': 'fill-extrusion',
                'minzoom': 15,
                'paint': {
                    'fill-extrusion-color': '#d4d4d4',

                    // Use an 'interpolate' expression to
                    // add a smooth transition effect to
                    // the buildings as the user zooms in.
                    'fill-extrusion-height': [
                        'interpolate',
                        ['linear'],
                        ['zoom'],
                        15,
                        0,
                        15.05,
                        ['get', 'height']
                    ],
                    'fill-extrusion-base': [
                        'interpolate',
                        ['linear'],
                        ['zoom'],
                        15,
                        0,
                        15.05,
                        ['get', 'min_height']
                    ],
                    'fill-extrusion-opacity': 0.5
                }
            },

            labelLayerId
        );
    });
    
    
    
    
    
    
    
  
  
  
  
  
  
  






  var size = 100;

    // This implements `StyleImageInterface`
    // to draw a pulsing dot icon on the map.
    var pulsingDot1 = {
        width: size,
        height: size,
        data: new Uint8Array(size * size * 4),

        // When the layer is added to the map,
        // get the rendering context for the map canvas.
        onAdd: function () {
            var canvas = document.createElement('canvas');
            canvas.width = this.width;
            canvas.height = this.height;
            this.context = canvas.getContext('2d');
        },

        // Call once before every frame where the icon will be used.
        render: function () {
            var duration = 1000;
            var t = (performance.now() % duration) / duration;

            var radius = (size / 2) * 0.3;
            var outerRadius = (size / 2) * 0.7 * t + radius;
            var context = this.context;

            // Draw the outer circle.
            context.clearRect(0, 0, this.width, this.height);
            context.beginPath();
            context.arc(
                this.width / 2,
                this.height / 2,
                outerRadius,
                0,
                Math.PI * 2
            );
            context.fillStyle = 'rgba(61, 133, 198,' + (0 - t) + ')';
            context.fill();

            // Draw the inner circle.
            context.beginPath();
            context.arc(
                this.width / 2,
                this.height / 2,
                radius,
                0,
                Math.PI * 2
            );
            context.fillStyle = '#3d85c6';
            context.strokeStyle = 'white';
            context.lineWidth = 2 + 4 * (1 - t);
            context.fill();
            context.stroke();

            // Update this image's data with data from the canvas.
            this.data = context.getImageData(
                0,
                0,
                this.width,
                this.height
            ).data;

            // Continuously repaint the map, resulting
            // in the smooth animation of the dot.
            map.triggerRepaint();

            // Return `true` to let the map know that the image was updated.
            return true;
        }
    };

    map.on('load', function () {
        map.addImage('pulsing-dot1', pulsingDot1, { pixelRatio: 2 });

        map.addSource('dot-point1', {
            'type': 'geojson',
            'data': { "id": "layer-with-pulsing-dot1",
                'type': 'FeatureCollection',
                'features': [
                    {
                        'type': 'Feature1',
                        'geometry': {
                            'type': 'Point',
                           
                   
                            'coordinates' : [37.17408380155007, 55.97734541443717], // icon position [lng, lat]
                        }
                        
                        
                        
                        
                    }
                ]
            }
        });
        

        
        map.addLayer({
            'id': 'layer-with-pulsing-dot1',
            'type': 'symbol',
            'source': 'dot-point1',
            'layout': {
                'icon-image': 'pulsing-dot1'
            }
        });
    });
    
    












var size = 100;

    // This implements `StyleImageInterface`
    // to draw a pulsing dot icon on the map.
    var pulsingDot2 = {
        width: size,
        height: size,
        data: new Uint8Array(size * size * 4),

        // When the layer is added to the map,
        // get the rendering context for the map canvas.
        onAdd: function () {
            var canvas = document.createElement('canvas');
            canvas.width = this.width;
            canvas.height = this.height;
            this.context = canvas.getContext('2d');
        },

        // Call once before every frame where the icon will be used.
        render: function () {
            var duration = 1500;
            var t = (performance.now() % duration) / duration;

            var radius = (size / 2) * 0.3;
            var outerRadius = (size / 2) * 0.7 * t + radius;
            var context = this.context;

            // Draw the outer circle.
            context.clearRect(0, 0, this.width, this.height);
            context.beginPath();
            context.arc(
                this.width / 2,
                this.height / 2,
                outerRadius,
                0,
                Math.PI * 2
            );
            context.fillStyle = 'rgba(61, 133, 198,' + (0 - t) + ')';
            context.fill();

            // Draw the inner circle.
            context.beginPath();
            context.arc(
                this.width / 2,
                this.height / 2,
                radius,
                0,
                Math.PI * 2
            );
            context.fillStyle = '#3d85c6';
            context.strokeStyle = 'white';
            context.lineWidth = 2 + 4 * (1 - t);
            context.fill();
            context.stroke();

            // Update this image's data with data from the canvas.
            this.data = context.getImageData(
                0,
                0,
                this.width,
                this.height
            ).data;

            // Continuously repaint the map, resulting
            // in the smooth animation of the dot.
            map.triggerRepaint();

            // Return `true` to let the map know that the image was updated.
            return true;
        }
    };

    map.on('load', function () {
        map.addImage('pulsing-dot2', pulsingDot2, { pixelRatio: 2 });

        map.addSource('dot-point2', {
            'type': 'geojson',
            'data': { "id": "layer-with-pulsing-dot2",
                'type': 'FeatureCollection',
                'features': [
                    {
                        'type': 'Feature2',
                        'geometry': {
                            'type': 'Point',
                           
                   
                            'coordinates' : [37.174090608623146, 55.977438727435384], // icon position [lng, lat]
                        }
                        
                        
                        
                        
                    }
                ]
            }
        });
        

        
        map.addLayer({
            'id': 'layer-with-pulsing-dot2',
            'type': 'symbol',
            'source': 'dot-point2',
            'layout': {
                'icon-image': 'pulsing-dot2'
            }
        });
    });

























  var size = 100;

    // This implements `StyleImageInterface`
    // to draw a pulsing dot icon on the map.
    var pulsingDot3 = {
        width: size,
        height: size,
        data: new Uint8Array(size * size * 4),

        // When the layer is added to the map,
        // get the rendering context for the map canvas.
        onAdd: function () {
            var canvas = document.createElement('canvas');
            canvas.width = this.width;
            canvas.height = this.height;
            this.context = canvas.getContext('2d');
        },

        // Call once before every frame where the icon will be used.
        render: function () {
            var duration = 2000;
            var t = (performance.now() % duration) / duration;

            var radius = (size / 2) * 0.3;
            var outerRadius = (size / 2) * 0.7 * t + radius;
            var context = this.context;

            // Draw the outer circle.
            context.clearRect(0, 0, this.width, this.height);
            context.beginPath();
            context.arc(
                this.width / 2,
                this.height / 2,
                outerRadius,
                0,
                Math.PI * 2
            );
            context.fillStyle = 'rgba(61, 133, 198,' + (0 - t) + ')';
            context.fill();

            // Draw the inner circle.
            context.beginPath();
            context.arc(
                this.width / 2,
                this.height / 2,
                radius,
                0,
                Math.PI * 2
            );
            context.fillStyle = '#3d85c6';
            context.strokeStyle = 'white';
            context.lineWidth = 2 + 4 * (1- t);
            context.fill();
            context.stroke();

            // Update this image's data with data from the canvas.
            this.data = context.getImageData(
                0,
                0,
                this.width,
                this.height
            ).data;

            // Continuously repaint the map, resulting
            // in the smooth animation of the dot.
            map.triggerRepaint();

            // Return `true` to let the map know that the image was updated.
            return true;
        }
    };

    map.on('load', function () {
        map.addImage('pulsing-dot3', pulsingDot3, { pixelRatio: 2 });

        map.addSource('dot-point3', {
            'type': 'geojson',
            'data': { "id": "layer-with-pulsing-dot3",
                'type': 'FeatureCollection',
                'features': [
                    {
                        'type': 'Feature3',
                        'geometry': {
                            'type': 'Point',
                           
                   
                            'coordinates' : [37.17402253788583, 55.97738540574963], // icon position [lng, lat]
                        }
                        
                        
                        
                        
                    }
                ]
            }
        });
        

        
        map.addLayer({
            'id': 'layer-with-pulsing-dot3',
            'type': 'symbol',
            'source': 'dot-point3',
            'layout': {
                'icon-image': 'pulsing-dot3'
            }
        });
    });















</script>






































<script>
	



  
     var size = 100;

    // This implements `StyleImageInterface`
    // to draw a pulsing dot icon on the map.
    var pulsingDot88 = {
width: size,
        height: size,
        data: new Uint8Array(size * size * 4),

        // When the layer is added to the map,
        // get the rendering context for the map canvas.
        onAdd: function () {
            var canvas = document.createElement('canvas');
            canvas.width = this.width;
            canvas.height = this.height;
            this.context = canvas.getContext('2d');
        },

        // Call once before every frame where the icon will be used.
        render: function () {
            var duration = 1000;
            var t = (performance.now() % duration) / duration;

            var radius = (size / 2) * 0.3;
            var outerRadius = (size / 2) * 0.7 * t + radius;
            var context = this.context;

            // Draw the outer circle.
            context.clearRect(0, 0, this.width, this.height);
            context.beginPath();
            context.arc(
                this.width / 2,
                this.height / 2,
                outerRadius,
                0,
                Math.PI * 2
            );
            context.fillStyle = 'rgba(255, 200, 200,' + (1.1 - t) + ')';
            context.fill();

            // Draw the inner circle.
            context.beginPath();
            context.arc(
                this.width / 2,
                this.height / 2,
                radius,
                0,
                Math.PI * 2
            );
            context.fillStyle = '#3d85c6';
            context.strokeStyle = 'white';
            context.lineWidth = 2 + 4 * (1 - t);
            context.fill();
            context.stroke();

            // Update this image's data with data from the canvas.
            this.data = context.getImageData(
                0,
                0,
                this.width,
                this.height
            ).data;

            // Continuously repaint the map, resulting
            // in the smooth animation of the dot.
            map.triggerRepaint();

            // Return `true` to let the map know that the image was updated.
            return true;
        }
    };
    
    
    
    

    map.on('load', function () {
        map.addImage('pulsing-dot88', pulsingDot88, { pixelRatio: 2 });

        map.addSource('dot-point88', {
            'type': 'geojson',
            'data': { "id": "layer-with-pulsing-dot88",
                'type': 'FeatureCollection',
                'features': [
                    {
                        'type': 'Feature88',
                        'geometry': {
                            'type': 'Point',
                           
                   
                            'coordinates' : [37.179822509803984, 55.97115799334276], // icon position [lng, lat]
                        }
                        
                        
                        
                        
                    }
                ]
            }
        });
        
    
 
        
        
        map.addLayer({
            'id': 'layer-with-pulsing-dot88',
            'type': 'symbol',
            'source': 'dot-point88',
            'layout': {
                'icon-image': 'pulsing-dot88'
            }
        });



});


</script>




















<script>


//DATA OF UNIVERSITIES
let geojson = {
    "id": "alldata",
    "type": "FeatureCollection",
    "features": [
    {
      "type": "Feature",
      "properties": {
        "title": "Umeå Universitet",
        "country": "Sweden",
        "study": "BWL and Economics",
        "agreement": "SEMP",
        "url": "https://www.umu.se/en/education/student-services--support/student-guide/"
      },
      "geometry": {
        "coordinates": [
          20.300855,
          63.820938
        ],
        "type": "Point"
      },
      "id": "09e708d842e65f3c5ac9fc40a2c90b22"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "Tsinghua University\t",
        "country": "China",
        "study": "BWL and Economics",
        "agreement": "Faculty Agreement",
        "url": "https://www.tsinghua.edu.cn/en/Admissions/Non_Degree_Programs.htm"
      },
      "geometry": {
        "coordinates": [
          116.320882,
          39.998497
        ],
        "type": "Point"
      },
      "id": "11175afb458129eaa68a185f44f2197a"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "Chulalongkorn University",
        "country": "Thailand",
        "study": "BWL and Economics",
        "agreement": "Faculty Agreement",
        "url": "https://www.chula.ac.th/en/admissions/exchange-student/inbound-exchange-student/"
      },
      "geometry": {
        "coordinates": [
          100.532886,
          13.743144
        ],
        "type": "Point"
      },
      "id": "1f5d1a4d5ecaa3a440b749829e42b49a"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "Università degli Studi di Perugia",
        "country": "Italy",
        "study": "BWL and Economics",
        "agreement": "SEMP",
        "url": "https://www.unipg.it/en/international-students/incoming-exchange-students"
      },
      "geometry": {
        "coordinates": [
          12.385345,
          43.115865
        ],
        "type": "Point"
      },
      "id": "22d08d0a14e6756e2782b53b2274901e"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "Universidad de las Palmas de Gran Canaria",
        "country": "Spain",
        "study": "BWL and Economics",
        "agreement": "SEMP",
        "url": "https://internacional.ulpgc.es/en/movilidad-incoming/estudiantes-incoming/study-at-the-ulpgc-incoming/espanol-programas-de-movilidad/"
      },
      "geometry": {
        "coordinates": [
          -15.419919,
          28.099106
        ],
        "type": "Point"
      },
      "id": "24a0b84989d3de4b1209f0fb4c71dfe8"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "Università degli Studi di Milano",
        "country": "Italy",
        "study": "Informatics",
        "agreement": "SEMP",
        "url": "https://www.unimi.it/en/international"
      },
      "geometry": {
        "coordinates": [
          9.194627,
          45.460068
        ],
        "type": "Point"
      },
      "id": "2db49da1224f4ed73b595838ff52ddb6"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "Università Ca' Foscari di Venezia",
        "country": "Italy",
        "study": "BWL and Economics",
        "agreement": "SEMP",
        "url": "https://www.unive.it/pag/12573/"
      },
      "geometry": {
        "coordinates": [
          12.326441,
          45.434492
        ],
        "type": "Point"
      },
      "id": "2e083bcbe4d97f84db5ae4cb4dafe38a"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "University of Limerick",
        "country": "Ireland",
        "study": "BWL and Economics",
        "agreement": "SEMP",
        "url": "https://www.ul.ie/international/"
      },
      "geometry": {
        "coordinates": [
          -8.570966,
          52.673748
        ],
        "type": "Point"
      },
      "id": "3104c9b3b08f233067808267c048c829"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "Københavns Universitet\t",
        "agreement": "SEMP",
        "study": "BWL and Economics",
        "url": "studies.ku.dk/visiting/",
        "country": "Denmark"
      },
      "geometry": {
        "coordinates": [
          12.572319,
          55.68015
        ],
        "type": "Point"
      },
      "id": "322e146fef794538864ec08ad53f5488"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "Linköpings Universitet",
        "country": "Sweden",
        "agreement": "SEMP",
        "study": "BWL",
        "url": "https://liu.se/en/education/exchange-studies"
      },
      "geometry": {
        "coordinates": [
          15.575403,
          58.39779
        ],
        "type": "Point"
      },
      "id": "3f87b2f5ef9f91f8291a8bf289612915"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "Universite Claude Bernard - Lyon 1",
        "country": "France",
        "study": "BWL and Economics",
        "agreement": "SEMP",
        "url": "https://www.univ-lyon1.fr/en/foreign-student/foreign-students-in-exchange-programs"
      },
      "geometry": {
        "coordinates": [
          4.868177,
          45.781561
        ],
        "type": "Point"
      },
      "id": "40c9209024ff0821c137a9a1ac48f53f"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "Ludwig-Maximilians-Universität München",
        "country": "Germany",
        "study": "BWL and Economics",
        "agreement": "SEMP",
        "url": "https://www.lmu.de/en/study/all-degrees-and-programs/programs-for-international-visiting-students/index.html"
      },
      "geometry": {
        "coordinates": [
          11.594295,
          48.150027
        ],
        "type": "Point"
      },
      "id": "48a0923a4ad05b5059e7075fced1a6ef"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "Technische Universität Darmstadt",
        "country": "Germany",
        "study": "Informatics",
        "agreement": "SEMP",
        "url": "https://www.tu-darmstadt.de/studieren/studierende_tu/internationale_studierende_1/index.en.jsp"
      },
      "geometry": {
        "coordinates": [
          8.656805,
          49.876397
        ],
        "type": "Point"
      },
      "id": "4b5533835c492a08cf93074ffc3d05a5"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "Westfälische Wilhelms-Universität Münster",
        "country": "Germany",
        "study": "BWL and Economics",
        "agreement": "SEMP",
        "url": "https://www.uni-muenster.de/InternationalOffice/"
      },
      "geometry": {
        "coordinates": [
          7.61311,
          51.963833
        ],
        "type": "Point"
      },
      "id": "4e8af4aa7713eeada82ba4e4bfea70a4"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "Högskolan i Skövde",
        "country": "Sweden",
        "study": "BWL and Economics",
        "agreement": "SEMP",
        "url": "https://www.his.se/en/education/exchange-student/"
      },
      "geometry": {
        "coordinates": [
          13.854841,
          58.394164
        ],
        "type": "Point"
      },
      "id": "4ece07c5ad055ac6904eb4a55c776a54"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "Universidad Rey Juan Carlos",
        "country": "Spain",
        "study": "BWL, Economics, Informatics",
        "agreement": "SEMP",
        "url": "https://www.urjc.es/en/international/internatinal-students/content/international-students"
      },
      "geometry": {
        "coordinates": [
          -3.819571,
          40.282609
        ],
        "type": "Point"
      },
      "id": "52a55a477a954dae4b6c7ace70ad3cf8"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "NEOMA Business School - Reims Campus",
        "country": "France",
        "study": "BWL and Economics",
        "agreement": "SEMP",
        "url": "https://neoma-bs.com/about-neoma/international/international-students/"
      },
      "geometry": {
        "coordinates": [
          4.003151,
          49.238941
        ],
        "type": "Point"
      },
      "id": "54c0a36ff1b24ffac62ad1492b34eaa0"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "Fudan University",
        "agreement": "Faculty Agreement",
        "study": "BWL and Economics",
        "country": "China",
        "url": "https://iso.fudan.edu.cn/isoenglish/main.htm"
      },
      "geometry": {
        "coordinates": [
          121.500477,
          31.301049
        ],
        "type": "Point"
      },
      "id": "5552c6af25de98cdfb7ad284071a2058"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "Jiaotong University\t",
        "country": "China",
        "study": "BWL, Economics, Informatics",
        "agreement": "Faculty Agreement",
        "url": "isc.sjtu.edu.cn/EN/content.aspx?info_lb=12&flag=1"
      },
      "geometry": {
        "coordinates": [
          121.432217,
          31.02778
        ],
        "type": "Point"
      },
      "id": "5b02b806a266bfe2b14d4e46e401484c"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "Universität Wien",
        "url": "https://international.univie.ac.at/en/student-mobility/incoming-students/",
        "country": "Austria",
        "study": "BWL, Economics, Informatics",
        "agreement": "SEMP"
      },
      "geometry": {
        "coordinates": [
          16.360078,
          48.213171
        ],
        "type": "Point"
      },
      "id": "5b394121ccb49b648d7988c5ce16f377"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "Johann Wolfgang Göthe-Universität",
        "country": "Germany",
        "url": "https://www.uni-frankfurt.de/38294581/An_die_Goethe_Uni",
        "study": "BWL and Economics",
        "agreement": "SEMP"
      },
      "geometry": {
        "coordinates": [
          8.667401,
          50.126796
        ],
        "type": "Point"
      },
      "id": "5f8f6dd9d8ed9b70e60ae7071bd21d91"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "Stockholms Universitet",
        "country": "Sweden",
        "study": "BWL and Economics",
        "agreement": "SEMP",
        "url": "https://www.su.se/english/education/2.24322"
      },
      "geometry": {
        "coordinates": [
          18.058786,
          59.363356
        ],
        "type": "Point"
      },
      "id": "696665d3b68ff9a7c19296b32e102661"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "Korea University Business School",
        "country": "South Korea",
        "study": "BWL",
        "agreement": "Faculty Agreement",
        "url": "https://biz.korea.ac.kr/eng/undergraduate/inbound"
      },
      "geometry": {
        "coordinates": [
          127.032526,
          37.589305
        ],
        "type": "Point"
      },
      "id": "6a6e807bc3da0ded2386eecf314b74af"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "Katholieke Universiteit Leuven",
        "agreement": "SEMP",
        "study": "BWL and Economics",
        "country": "Belgium",
        "url": "https://www.kuleuven.be/english/admissions/exchange"
      },
      "geometry": {
        "coordinates": [
          4.700373,
          50.877977
        ],
        "type": "Point"
      },
      "id": "6bf8659399599f43ffb0eef06a0c8094"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "Università degli Studi di Firenze",
        "country": "Italy",
        "study": "BWL and Economics",
        "agreement": "SEMP",
        "url": "https://www.unifi.it/index.php?module=CMpro&func=viewpage&pageid=10591&newlang=eng"
      },
      "geometry": {
        "coordinates": [
          11.242081,
          43.806858
        ],
        "type": "Point"
      },
      "id": "703e7a3d99f1e655195d87d101a3e52c"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "École de management de Normandie",
        "country": "France",
        "study": "BWL and Economics",
        "agreement": "SEMP",
        "url": "https://www.em-normandie.com/en/international-students"
      },
      "geometry": {
        "coordinates": [
          0.10355,
          49.489022
        ],
        "type": "Point"
      },
      "id": "769c78aac7779385e56b9e5662dae24f"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "Humboldt-Universität zu Berlin",
        "country": "Germany",
        "agreement": "SEMP",
        "study": "BWL and Economics",
        "url": "https://www.international.hu-berlin.de/de/studierende/aus-dem-ausland"
      },
      "geometry": {
        "coordinates": [
          13.39355,
          52.51875
        ],
        "type": "Point"
      },
      "id": "7ae88782e819ec3d5d82f8cf24a6decc"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "Università degli Studi di Salerno",
        "country": "Italy",
        "agreement": "SEMP",
        "study": "Informatics",
        "url": "https://web.unisa.it/unisa-rescue-page/dettaglio/id/685/module/196/row/21"
      },
      "geometry": {
        "coordinates": [
          14.791166,
          40.772038
        ],
        "type": "Point"
      },
      "id": "7b266b27d6918a02afe3432dc0f2dbc7"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "Technische Universität München",
        "country": "Germany",
        "agreement": "SEMP",
        "study": "BWL and Economics",
        "url": "https://www.tum.de/studium/internationale-studierende/"
      },
      "geometry": {
        "coordinates": [
          11.567739,
          48.149557
        ],
        "type": "Point"
      },
      "id": "7bed9edffac88aa9b6957553cc2635e3"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "Rijksuniversiteit Groningen",
        "country": "Netherlands",
        "study": "BWL and Economics",
        "agreement": "SEMP",
        "url": "https://www.rug.nl/education/exchange/"
      },
      "geometry": {
        "coordinates": [
          6.562545,
          53.219538
        ],
        "type": "Point"
      },
      "id": "84dedbcf217e305f016ffbe93633a49e"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "Radboud Universiteit Nijmegen",
        "country": "Netherlands",
        "study": "BWL and Economics",
        "agreement": "SEMP",
        "url": "https://www.ru.nl/io/english/students/incoming-exchange-0/"
      },
      "geometry": {
        "coordinates": [
          5.86521,
          51.819693
        ],
        "type": "Point"
      },
      "id": "85952e25904bc12d1dbd21ea22d7378e"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "Universität Karlsruhe (TH)",
        "country": "Germany",
        "study": "Informatics",
        "url": "https://www.intl.kit.edu/istudies/",
        "agreement": "SEMP"
      },
      "geometry": {
        "coordinates": [
          8.416899,
          49.012379
        ],
        "type": "Point"
      },
      "id": "91295f9c15ebc226128696c5acde4914"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "Uppsala Universitet",
        "study": "BWL, Economics, Informatics",
        "agreement": "SEMP",
        "url": "https://www.uu.se/en/admissions/exchange/",
        "country": "Sweden"
      },
      "geometry": {
        "coordinates": [
          17.626643,
          59.853701
        ],
        "type": "Point"
      },
      "id": "92fab91146360a349c3c93ae31ddc1a7"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "ESC Rennes School of Business",
        "country": "France",
        "study": "BWL and Economics",
        "agreement": "SEMP",
        "url": "https://www.rennes-sb.com/programmes/exchange-programme/"
      },
      "geometry": {
        "coordinates": [
          -1.692348,
          48.127834
        ],
        "type": "Point"
      },
      "id": "94e99c0c04cd0c507bc2996846200cc7"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "Institut d'études Politiques de Paris (Sciences Po)",
        "country": "France",
        "study": "BWL and Economics",
        "agreement": "SEMP",
        "url": "https://www.sciencespo.fr/international/en/content/exchange-programme.html"
      },
      "geometry": {
        "coordinates": [
          2.329003,
          48.853898
        ],
        "type": "Point"
      },
      "id": "9764c8dc172758e35acb13e050ca51f0"
    },
    {
      "type": "Feature",
      "properties": {
        "tile": "Hanken Svenska Handelshögskolan",
        "country": "Finland",
        "url": "https://www.hanken.fi/en/apply/international-opportunities/incoming-exchange-students",
        "study": "BWL and Economics",
        "agreement": "SEMP"
      },
      "geometry": {
        "coordinates": [
          24.924495,
          60.170851
        ],
        "type": "Point"
      },
      "id": "97eea7d1fa41900cee3d01a147edaa37"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "ESCEM",
        "country": "France",
        "study": "BWL and Economics",
        "agreement": "SEMP",
        "url": "https://www.escem.fr/escem-business-school/international/student-life/"
      },
      "geometry": {
        "coordinates": [
          0.704807,
          47.365095
        ],
        "type": "Point"
      },
      "id": "9a80b7b1715a1332109b340bf87ea533"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "University of Victoria",
        "agreement": "Faculty Agreement",
        "country": "Canada",
        "url": "https://www.uvic.ca/international/inbound-students/exchange/index.php",
        "study": "BWL and Economics"
      },
      "geometry": {
        "coordinates": [
          -123.311731,
          48.465128
        ],
        "type": "Point"
      },
      "id": "a33b50144bb772cae9228a9edef832a0"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "Erasmus Universiteit Rotterdam",
        "country": "Netherlands",
        "study": "BWL and Economics",
        "agreement": "SEMP",
        "url": "https://www.eur.nl/en/education/exchange/come-rotterdam-exchange"
      },
      "geometry": {
        "coordinates": [
          4.52598,
          51.917627
        ],
        "type": "Point"
      },
      "id": "a50540eba9125ff12bed064636f3d0c4"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "Singapore Management University",
        "country": "Singapore",
        "study": "BWL and Economics",
        "agreement": "Faculty Agreement",
        "url": "https://www.smu.edu.sg/global/study-in-smu"
      },
      "geometry": {
        "coordinates": [
          103.850276,
          1.296466
        ],
        "type": "Point"
      },
      "id": "a70a661da3defa1c4ed374b4a3cb8a2b"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "Örebro Universitet",
        "country": "Sweden",
        "agreement": "SEMP",
        "url": "https://www.oru.se/english/study/exchange-students/",
        "study": "BWL, Economics, Informatics"
      },
      "geometry": {
        "coordinates": [
          15.249113,
          59.25473
        ],
        "type": "Point"
      },
      "id": "a76db46b44998922ed3d38a7d9d74607"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "Handelshøyskolen BI",
        "country": "Norway",
        "study": "BWL and Economics",
        "agreement": "SEMP",
        "url": "https://www.bi.edu/programmes-and-individual-courses/exchange-programme/"
      },
      "geometry": {
        "coordinates": [
          10.768531,
          59.948363
        ],
        "type": "Point"
      },
      "id": "ab7f0321a98e00efcf2fe37495695e71"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "Libera Università di Bolzano",
        "country": "Italy",
        "study": "Informatics",
        "agreement": "SEMP",
        "url": "https://www.unibz.it/en/applicants/international/incoming-exchange-students/"
      },
      "geometry": {
        "coordinates": [
          11.350055,
          46.498315
        ],
        "type": "Point"
      },
      "id": "b856a9fb639ec51f52885a2f5ae76a09"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "University of Lincoln",
        "agreement": "SEMP",
        "study": "BWL and Economics",
        "country": "United Kingdom",
        "url": "https://www.lincoln.ac.uk/home/studywithus/internationalstudents/"
      },
      "geometry": {
        "coordinates": [
          -0.548748,
          53.228544
        ],
        "type": "Point"
      },
      "id": "bc5a69667aaabdab3ad85bff94ec8875"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "Hong Kong Polytechnic University",
        "country": "China",
        "url": "https://www.polyu.edu.hk/geo/exchange-and-study-abroad/incoming-students/",
        "study": "BWL and Economics",
        "agreement": "Faculty Agreement"
      },
      "geometry": {
        "coordinates": [
          114.179756,
          22.304572
        ],
        "type": "Point"
      },
      "id": "c355a47327baf05181730f9a8044eca3"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "ESSEC Business School",
        "country": "France",
        "study": "BWL and Economics",
        "agreement": "SEMP",
        "url": "https://sites.google.com/a/essec.edu/bba-incoming-international-exchange/home"
      },
      "geometry": {
        "coordinates": [
          2.077174,
          49.033481
        ],
        "type": "Point"
      },
      "id": "c37ba930d6830201cf2745a8c0a8fab8"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "Syddansk Universitet",
        "agreement": "SEMP",
        "study": "BWL and Economics",
        "country": "Denmark",
        "url": "https://www.sdu.dk/en/uddannelse/exchange_programmes/exchange_facultyofbss"
      },
      "geometry": {
        "coordinates": [
          10.428135,
          55.367904
        ],
        "type": "Point"
      },
      "id": "c7541f2284116bd947863ec2be364c30"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "Universität Mannheim",
        "country": "Germany",
        "study": "BWL and Economics",
        "agreement": "SEMP",
        "url": "https://www.uni-mannheim.de/studium/vom-ausland-nach-mannheim/"
      },
      "geometry": {
        "coordinates": [
          8.46456,
          49.483244
        ],
        "type": "Point"
      },
      "id": "ca484381e1124ddd8aae9e7362038cc4"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "Università Commerciale Luigi Bocconi",
        "country": "Italy",
        "study": "BWL and Economics",
        "agreement": "SEMP",
        "url": "https://www.unibocconi.eu/wps/wcm/connect/Bocconi/SitoPubblico_EN/Navigation+Tree/Home/programs/current+students/Services/International+Relations/International+Students/International+Student+Desk/"
      },
      "geometry": {
        "coordinates": [
          9.188678,
          45.449714
        ],
        "type": "Point"
      },
      "id": "caea424d84380cecbbf02a7159d010e3"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "Universitat Internacional de Catalunya",
        "country": "Spain",
        "study": "BWL and Economics",
        "agreement": "SEMP",
        "url": "https://www.uic.es/en/international/study-uic-barcelona/international-mobility/admission-and-enrolment-exchange-students"
      },
      "geometry": {
        "coordinates": [
          2.123529,
          41.405719
        ],
        "type": "Point"
      },
      "id": "cdc6fe97e3322afa3e051ea0b41b21f2"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "Universidad Autonoma de Madrid",
        "country": "Spain",
        "study": "BWL and Economics",
        "agreement": "SEMP",
        "url": "http://www.uam.es/UAM/incoming-students?language=en&nodepath=Incoming%20Students"
      },
      "geometry": {
        "coordinates": [
          -3.694989,
          40.545565
        ],
        "type": "Point"
      },
      "id": "cec932d9aa01b042d895e4b561990573"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "Queen Mary University of London",
        "country": "United Kingdom",
        "study": "BWL and Economics",
        "agreement": "SEMP",
        "url": "https://www.qmul.ac.uk/international-students/"
      },
      "geometry": {
        "coordinates": [
          -0.039322,
          51.52472
        ],
        "type": "Point"
      },
      "id": "d42fbf91a29c79c723a2a5b2a91be125"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "Univerza v Ljubljani",
        "country": "Slovenia",
        "study": "BWL and Economics",
        "agreement": "SEMP",
        "url": "https://www.uni-lj.si/study/information/exchange/"
      },
      "geometry": {
        "coordinates": [
          14.504128,
          46.048982
        ],
        "type": "Point"
      },
      "id": "d45dec053ce7e973f739c7a6143aa3d2"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "Aalto-Yliopisto",
        "country": "Finland",
        "study": "BWL and Economics",
        "agreement": "SEMP",
        "url": "https://into.aalto.fi/display/enopisk/International+students"
      },
      "geometry": {
        "coordinates": [
          24.828341,
          60.186547
        ],
        "type": "Point"
      },
      "id": "ddbd29a0de4a66a580e1e075ddf15648"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "København Handelshøjskolen",
        "country": "Denmark",
        "url": "https://www.cbs.dk/en/international-opportunities/international-students",
        "study": "BWL and Economics",
        "agreement": "SEMP"
      },
      "geometry": {
        "coordinates": [
          12.52475,
          55.680862
        ],
        "type": "Point"
      },
      "id": "e62c3b8b7013777710e5474ea83871ab"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "Queen's University",
        "country": "Canada",
        "study": "BWL and Economics",
        "agreement": "Faculty Agreement",
        "url": "https://www.queensu.ca/artsci/think-and-apply/undergrad/international-students"
      },
      "geometry": {
        "coordinates": [
          -76.495213,
          44.22624
        ],
        "type": "Point"
      },
      "id": "e6b71f97a600b6140722d9b73ce59474"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "EDHEC Business School",
        "country": "France",
        "study": "BWL and Economics",
        "agreement": "SEMP",
        "url": "https://bba.edhec.edu/en/exchange-students"
      },
      "geometry": {
        "coordinates": [
          3.166072,
          50.672982
        ],
        "type": "Point"
      },
      "id": "e9343f935476600bb04fc6d6dfcd8014"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "The University of Tokyo",
        "country": "Japan",
        "study": "Informatics",
        "agreement": "Faculty Agreement",
        "url": "https://www.u-tokyo.ac.jp/adm/inbound/en/programs-ex.html"
      },
      "geometry": {
        "coordinates": [
          139.76374,
          35.711707
        ],
        "type": "Point"
      },
      "id": "eb63dc7d9e202b2a399e0a00106da374"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "Renmin University of China\t",
        "country": "China",
        "study": "BWL and Economics",
        "agreement": "Faculty Agreement",
        "url": "https://www.ruc.edu.cn/forinternationalstudents-en"
      },
      "geometry": {
        "coordinates": [
          116.307088,
          39.969776
        ],
        "type": "Point"
      },
      "id": "ed02293c242d6252f7d18b71639cbcdf"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "Universidade de Sao Paulo",
        "agreement": "Faculty Agreement",
        "study": "BWL and Economics",
        "url": "http://www.usp.br/internationaloffice/en/index.php/admissions/studentexchange",
        "country": "Brasil"
      },
      "geometry": {
        "coordinates": [
          -46.723775,
          -23.55907
        ],
        "type": "Point"
      },
      "id": "f76cf597d3e8b7817e6580e5539c05fd"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "Göteborgs Universitet",
        "country": "Sweden",
        "study": "BWL and Economics",
        "agreement": "SEMP",
        "url": "https://www.gu.se/en/study-in-gothenburg/exchange-student"
      },
      "geometry": {
        "coordinates": [
          11.971299,
          57.698551
        ],
        "type": "Point"
      },
      "id": "faf7ebed35a56e4fed50c313f9690ede"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "Universitat Pompeu Fabra",
        "country": "Spain",
        "study": "BWL and Economics",
        "agreement": "SEMP",
        "url": "https://www.upf.edu/web/incoming"
      },
      "geometry": {
        "coordinates": [
          2.179736,
          41.378997
        ],
        "type": "Point"
      },
      "id": "fc5bb5e29b1bed1abcdd15576a074496"
    },
    {
      "type": "Feature",
      "properties": {
        "title": "Wirtschaftsuniversität Wien",
        "country": "Austria",
        "study": "BWL and Economics",
        "url": "https://www.wu.ac.at/en/programs/incoming-students",
        "agreement": "SEMP"
      },
      "geometry": {
        "coordinates": [
          16.408251,
          48.213675
        ],
        "type": "Point"
      },
      "id": "ff05535b4b357e212a2e2cecf138bf24"
    }
  ],
  "type": "FeatureCollection"
};














//MAP DATA, DESIGN, ACCESS TOKEN

    
    
    
    
    
    
    
    
    
    
    
    

    map.on('load', function () {
        // Add a new source from our GeoJSON data and
        // set the 'cluster' option to true. GL-JS will
        // add the point_count property to your source data.
        map.addSource('alldata', {
            type: 'geojson',
            data:  geojson,
            cluster: true,
            clusterMaxZoom: 14, // Max zoom to cluster points on
            clusterRadius: 50 // Radius of each cluster when clustering points (defaults to 50)
        });
//CLUSTER AND ADDING LAYERS
          map.addLayer({
            id: 'BWL / Economics',
            type: 'circle',
            source: 'alldata',
            filter: ["any", ['==', ['get', 'study'], 'BWL'],
          ['==', ['get', 'study'], 'BWL and Economics'],['==', ['get', 'study'], 'BWL, Economics, Informatics']],
            paint: {
                'circle-color': '#3d85c6',
                'circle-radius': 8,
                'circle-stroke-width': 2,
                'circle-stroke-color': 'white'
            }
        });
       //layer informatics universities
   map.addLayer({
            id: 'Informatics',
            type: 'circle',
            source: 'alldata',
            filter: ["any", ['==', ['get', 'study'], 'Informatics'],
          ['==', ['get', 'study'], 'BWL, Economics, Informatics']],
            paint: {
                'circle-color': '#3d85c6',
                'circle-radius': 8,
                'circle-stroke-width': 2,
                'circle-stroke-color': 'white'
            }
        });
       map.addLayer({
            id: 'clusters',
            type: 'circle',
            source: 'alldata',
            filter: ['has', 'point_count'],
            paint: {
                // Use step expressions (https://docs.mapbox.com/mapbox-gl-js/style-spec/#expressions-step)
                // with three steps to implement three types of circles:
                //   * Blue, 20px circles when point count is less than 100
                //   * Yellow, 30px circles when point count is between 100 and 750
                //   * Pink, 40px circles when point count is greater than or equal to 750
                'circle-color': [
                    'step',
                    ['get', 'point_count'],
                    '#3d85c6',
                    100,
                    '#3d85c6',
                    
                ],
                'circle-radius': [
                    'step',
                    ['get', 'point_count'],
                    17,
                    100,
                    20,
                    750,
                    20
                ]
            }
        });

        map.addLayer({
            id: 'cluster-count',
            type: 'symbol',
            source: 'alldata',
            filter: ['has', 'point_count'],
            layout: {
                'text-field': '{point_count_abbreviated}',
                'text-font': ['DIN Offc Pro Medium', 'Arial Unicode MS Bold'],
                'text-size': 12              
            },
          paint: {
  "text-color": "#ffffff"
}
        });
//don't need this anymore
      /* map.addLayer({
            id: 'unclustered-point',
            type: 'circle',
            source: 'alldata',
            filter: ['!', ['has', 'point_count']],
            paint: {
                'circle-color': '#0028a5',
                'circle-radius': 8,
                'circle-stroke-width': 0,
                'circle-stroke-color': '#fff'
            }
        }); */ 
      //layer bwl and vwl universities

        // inspect a cluster on click, zoom in if you click on cluster
        map.on('click', 'clusters', function (e) {
            var features = map.queryRenderedFeatures(e.point, {
                layers: ['clusters']
            });
            var clusterId = features[0].properties.cluster_id;
            map.getSource('alldata').getClusterExpansionZoom(
                clusterId,
                function (err, zoom) {
                    if (err) return;

                    map.easeTo({
                        center: features[0].geometry.coordinates,
                        zoom: zoom
                    });
                }
            );
        });

        // When a click event occurs on a feature in
        // the unclustered-point layer, open a popup at
        // the location of the feature, with
//POP UP
        map.on('click', function(e) {
  var features = map.queryRenderedFeatures(e.point, {
    layers: ['BWL / Economics', 'Informatics'] // replace this with the name of the layer
  });
            
       if (!features.length) {return;}
       var feature = features[0];

            // Ensure that if the map is zoomed out such that
            // multiple copies of the feature are visible, the
            // popup appears over the copy being pointed to.
            

            var popup = new mapboxgl.Popup({ offset: [0, 0] })
    .setLngLat(feature.geometry.coordinates)
    .setHTML('<h4>' + feature.properties.country + '</h4><h2>' + feature.properties.title + '</h2><p><a href="' + feature.properties.url + '" target="_blank">Website</a></p><p>Agreement: ' + feature.properties.agreement + '<br>Study: ' + feature.properties.study +'</p>')
    .addTo(map);
      });
       
    });

//changes design of cursor when it moves over cluster, makes it a pointy finger
map.on('mouseenter', 'clusters', function () {
            map.getCanvas().style.cursor = 'pointer';
        });
        map.on('mouseleave', 'clusters', function () {
            map.getCanvas().style.cursor = '';
        });

//FILTER
 // enumerate ids of the layers
    var toggleableLayerIds = ['BWL / Economics', 'Informatics'];

    // set up the corresponding toggle button for each layer
    for (var i = 0; i < toggleableLayerIds.length; i++) {
        var id = toggleableLayerIds[i];

        var link = document.createElement('a');
        link.href = '#';
        link.className = 'active';
        link.textContent = id;

        link.onclick = function (e) {
            var clickedLayer = this.textContent;
            e.preventDefault();
            e.stopPropagation();

            var visibility = map.getLayoutProperty(clickedLayer, 'visibility');

            // toggle layer visibility by changing the layout object's visibility property
            if (visibility === 'visible') {
                map.setLayoutProperty(clickedLayer, 'visibility', 'none');
                this.className = '';
            } else {
                this.className = 'active';
                map.setLayoutProperty(clickedLayer, 'visibility', 'visible');
            }
        };

        var layers = document.getElementById('menu');
        layers.appendChild(link); 
    }
    
    
    
    </script>





















	
	
	

</body>
	
	

	
</html>
